﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ZedGraph;
using ZedGraph.Web;
using System.Drawing;
using System.Drawing.Imaging;


namespace Web
{
    public partial class myzedgraph : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph);//注册事件
 
        }
        

        private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, ZedGraph.MasterPane masterPane)
        {
            GraphPane myPane = masterPane[0];

            myPane.Title.Text = "消费者学历统计";  //设计图表的标题
            myPane.XAxis.Title.Text = "学历类型"; //X轴标题
            myPane.YAxis.Title.Text = "人数"; //Y轴标题

            PointPairList list = new PointPairList(); //初始化一个PointPariList对象，说白了就是一条曲线或一条柱子要生出来了
            //PointPairList list2 = new PointPairList();  如果你要在一个图表城显示多条曲线或柱子你就可以增加一个PointPariList对像，相对应下面的 y2,List2也是这个List相关的东西了
            //PointPairList list3 = new PointPairList(); //原理同上


            //for (int x = 0; x < this.gdvEduList.Rows.Count; x++)
            ////循环,x的初始值为0,最终值是我数据源中的记录总数 这里主要是gdvEdulist.Rows.Count的设定，根据你的数据源来设定
            //{
            //    int careerCount = Convert.ToInt32(this.gdvEduList.Rows[x].Cells[1].Text.Trim());
            //    // 这个是获取所对应的每条柱子所对应的数据的文本，我是从gridvew中直接取到的
            //    int y = careerCount;//这句就是要充的值了，将CareerCount的值都整到Y里面去了，其实你也可以直接将值赋予Y，注意，这里的Y应该代表Y轴
            //    //double y2 = rand.NextDouble() * 300;
            //    //double y3 = rand.NextDouble() * 300;
            //    list.Add(x, y); // 将XY的值整到list里面存储起来
            //    //list2.Add(x, y2);
            //    //list3.Add(x, y3);
            //}
            //BarItem myCurve = myPane.AddBar("数据统计", list, Color.Green); //增加一个Bar,List里面是不是包含了（X，Y)
            //myCurve.Bar.Fill = new Fill(Color.Green, Color.Green, Color.Green); //将颜色直译
            ////BarItem myCurve2 = myPane.AddBar("续费", list2, Color.Red);
            ////myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
            ////BarItem myCurve3 = myPane.AddBar("升级", list3, Color.Green);
            ////myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);

            //myPane.XAxis.MajorTic.IsBetweenLabels = true; //这个我不知道乍么解释，不好意思
            //string[] labels = new string[gdvEduList.Rows.Count];
            //for (int i = 0; i < this.gdvEduList.Rows.Count; i++)  //这个循环主要是取到里面的说明文字，用了一个数组的方法
            //{
            //    labels[i] = this.gdvEduList.Rows[i].Cells[0].Text.Trim();
            //}

            //以下这些是无关痛庠的属性设置了，一般默认就可以
            myPane.XAxis.Scale.TextLabels = new string[] { "a", "b" };//labels;
            myPane.XAxis.Type = AxisType.Text;
            myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);
            myPane.Chart.Fill = new Fill(Color.White, Color.White, 45.0f);
            masterPane.AxisChange(g); //这句话不可少
        }

    }
}